package peace.util
{
	
/**
* числа, пацаны 
*/
public class Numbers
{
	/**
	 * Результат будет в рамках [min,max]. Если изначально был в рамках, возвращает без изменений 
	 *  
	 * @param value
	 * @param min
	 * @param max
	 * @return 
	 * 
	 */
	public static function restrict (value:Number, min:Number, max:Number):Number
	{
		if (value < min) value = min;
		else if (value > max) value = max;
		return value;
	}
	/**
	 * Привязка числа к шкале с дискретным шагом
	 * 
	 * @param value
	 * @param step
	 * @return 
	 * 
	 */	
	public static function discrete (value:Number, step:Number):Number
	{
		return Math.round(value/step) * step;
	}
	/**
	 * Формируем грамматическое окончание слова после числительного. <br>
	 * Язык пока русский :)
	 * <br><br>
	 * 
	 * Бывает 3 формы окончания: 1 рука, 2 руки, 5 рук; возвращаю соответственно 0,1 или 2
	 * 
	 * @param n
	 * @param lang
	 * @return int 0,1,2
	 * 
	 */	
	public static function getGrammarEnding (n:Number, lang:String = "ru"):int
	{
		// рассматриваю только целые числа; для дробных 1
		if (n == int(n))
		{
			n = n % 100;
			// второй деясяток всегда везде 2 
			if (n > 10 && n < 20) return 2;
			else
			{
				n = n % 10;
				if (n == 1) return 0;
				else if (n > 1 && n < 5) return 1;
				else return 2;
			}
		}
		return 1;
	}

}

}